<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>预定义变量</title>

 </head>
 <body><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="language.variables.basics.html">基础</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="language.variables.scope.html">变量范围</a></div>
 <div class="up"><a href="language.variables.html">变量</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div><hr /><div id="language.variables.predefined" class="sect1">
   <h2 class="title">预定义变量</h2>

   <p class="simpara">
    PHP 提供了大量的预定义变量。由于许多变量依赖于运行的服务器的版本和设置，及其它因素，所以并没有详细的说明文档。一些预定义变量在
    PHP 以<a href="features.commandline.html" class="link">命令行</a>形式运行时并不生效。有关这些变量的详细列表，请参阅<a href="reserved.variables.html" class="link">预定义变量</a>一章。
   </p>

   <div class="warning"><strong class="warning">Warning</strong>
    <p class="simpara">
     PHP 4.2.0 以及后续版本中，PHP 指令 <a href="ini.core.html#ini.register-globals" class="link">register_globals</a> 的默认值为
     <em class="emphasis">off</em>。这是 PHP 的一个主要变化。让 register_globals 的值为
     <em class="emphasis">off</em> 将影响到预定义变量集在全局范围内的有效性。例如，为了得到
     <var class="varname"><var class="varname">DOCUMENT_ROOT</var></var> 的值，将必须使用
     <var class="varname"><var class="varname"><a href="reserved.variables.server.html" class="classname">$_SERVER['DOCUMENT_ROOT']</a></var></var> 代替
     <var class="varname"><var class="varname">$DOCUMENT_ROOT</var></var>，又如，使用
     <var class="varname"><var class="varname"><a href="reserved.variables.get.html" class="classname">$_GET['id']</a></var></var> 来代替 <var class="varname"><var class="varname">$id</var></var> 从 URL
     <em>http://www.example.com/test.php?id=3</em> 中获取
     id 值，亦或使用 <var class="varname"><var class="varname"><a href="reserved.variables.environment.html" class="classname">$_ENV['HOME']</a></var></var> 来代替
     <var class="varname"><var class="varname">$HOME</var></var> 获取环境变量 HOME 的值。
    </p>
    <p class="simpara">
     更多相关信息，请阅读 <a href="ini.core.html#ini.register-globals" class="link">register_globals</a>
     的配置项条目，安全一章中的<a href="security.globals.html" class="link">使用 Register Globals</a>，以及 PHP
     <a href="http://www.php.net/releases/4_1_0.php" class="link external">&raquo;&nbsp;4.1.0</a> 和
     <a href="http://www.php.net/releases/4_2_0.php" class="link external">&raquo;&nbsp;4.2.0</a> 的发布公告。
    </p>
    <p class="simpara">
     如果有可用的 PHP 预定义变量那最好用，如<a href="language.variables.superglobals.html" class="link">超全局数组</a>。
    </p>
   </div>

   <p class="simpara">
    从 PHP 4.1.0 开始，PHP 提供了一套附加的预定数组，这些数组变量包含了来自 web
    服务器（如果可用），运行环境，和用户输入的数据。这些数组非常特别，它们在全局范围内自动生效，例如，在任何范围内自动生效。因此通常被称为自动全局变量（autoglobals）或者超全局变量（superglobals）。（PHP
    中没有用户自定义超全局变量的机制。）超全局变量罗列于下文中；但是为了得到它们的内容和关于
    PHP 预定义变量的进一步的讨论以及它们的本质，请参阅<a href="reserved.variables.html" class="link">预定义变量</a>。而且，你也将注意到旧的预定义数组（<var class="varname"><var class="varname">$HTTP_*_VARS</var></var>）仍旧存在。自 PHP 5.0.0 起, 用
<a href="ini.core.html#ini.register-long-arrays" class="link">register_long_arrays</a> 设置选项可禁用
长类型的 PHP <a href="language.variables.predefined.html" class="link">预定义变量</a>数组。
   </p>

   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <strong>可变变量</strong><br />
    <p class="para">
     超级全局变量不能被用作函数或类方法中的<a href="language.variables.variable.html" class="link">可变变量</a>。
    </p>
   </p></blockquote>
    <blockquote class="note"><p><strong class="note">Note</strong>: 
    <p class="para">
     尽管超全局变量和 HTTP_*_VARS
     同时存在，但是它们并不是同一个变量，所以改变其中一个的值并不会对另一个产生影响。
    </p>
   </p></blockquote>

   <p class="para">
    如果某些 <a href="ini.core.html#ini.variables-order" class="link">variables_order</a>
    中的变量没有设定，它们的对应的 PHP 预定义数组也是空的。
   </p>

  </div><hr /><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="language.variables.basics.html">基础</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="language.variables.scope.html">变量范围</a></div>
 <div class="up"><a href="language.variables.html">变量</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div></body></html>
